/**
 * 此文件里存放不好分类说明的js方法 
 */

var comsJs = { 

	
	/**
	 * 检查变量是否为空, null undefined 统一转换成 ""
	 * @param {string} strs
	 * @returns string
	 */
	checkValue : function (strs){
		var tt="";
		if(undefined===strs || "null"==strs || Null==strs) return tt;
		return strs;
	},

	/**
	 * 检查对象是否为空
	 * @param {obj} obj
	 * @returns {Boolean} true:不为空  false:空
	 */
	checkObjIsEmpty : function (obj){
		var tt=false;
		if(undefined==obj || ""==obj || null==obj ) return tt;
		for(var temp in obj){
			if(obj[temp]!=undefined) tt=true;
			break;
		}
		return tt;
	},
	
	/** 
	 * 获取指定URL中的某个参数
	 * @param {string}  name    参数名
	 * @param {string}  url     为空表示当前url
	 * @returns {string}  参数值
	 */
	getUrlParams : function(name,url){
		if(!url) url = window.location.href;
		var params = {};
		var url = decodeURI(url);
		var idx = url.indexOf("?");
		if(idx > 0)
		{
			var queryStr = url.substring(idx + 1);
			var args = queryStr.split("&");
			for(var i = 0, a, nv; a = args[i]; i++)
			{
				nv = args[i] = a.split("=");
				params[nv[0]] = nv.length > 1 ? nv[1] : true;
			}
		}
		return params[name]==undefined ? "": params[name];
	},



	/** 
	* 封装ajax函数 
	* @param {string}opt.type http连接的方式，包括POST和GET两种方式
	* @param {string}opt.url 发送请求的url
	* @param {boolean}opt.async 是否为异步请求，true为异步的，false为同步的
	* @param {object}opt.data 发送的参数，格式为对象类型
	* @param {function}opt.success ajax发送并接收成功调用的回调函数
	* @param {function}opt.error ajax发送失败调用的回调函数
	* 
	例：
		ajax({
			method: 'POST',
			url: 'test.php',
			data: {
				name1: 'value1',
				name2: 'value2'
			},
			success: function (response) {
			   console.log(response);
			}
		});
	*/
	ajax:function (opt) {
		opt = opt || {};
		opt.method = opt.method.toUpperCase() || 'POST';
		opt.url = opt.url || '';
		opt.async = opt.async || true;
		opt.data = opt.data || null;
		opt.success = opt.success || function () {};
		opt.error = opt.error || function () {};
		var xmlHttp = null;
		if (XMLHttpRequest) {
			xmlHttp = new XMLHttpRequest();
		}
		else {
			xmlHttp = new ActiveXObject('Microsoft.XMLHTTP');
		}var params = [];
		for (var key in opt.data){
			params.push(key + '=' + opt.data[key]);
		}
		var postData = params.join('&');
		if (opt.method.toUpperCase() === 'POST') {
			xmlHttp.open(opt.method, opt.url, opt.async);
			xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded;charset=utf-8');
			xmlHttp.send(postData);
		}
		else if (opt.method.toUpperCase() === 'GET') {
			xmlHttp.open(opt.method, opt.url + '?' + postData, opt.async);
			xmlHttp.send(null);
		} 
		xmlHttp.onreadystatechange = function () {
			if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
				opt.success(xmlHttp.responseText);
			}
		};
		xmlHttp.onerror = function(err) {
			opt.error(err);
		}
	},


    /** 
	 * js数组排序 支持数字和字符串
	 * @param params
	 * @param arrObj   obj     必填  数组对象
	 * @param keyName  string  必填  要排序的属性名称
	 * @param type     int     选填  默认type:0 正顺  type:1反顺
	 * 
	   例：
	   var temp = [
		 {"name":"zjf","score":50,"age":10},
		 {"name":"lyy","score":90,"age":5}
	   ];
	   var temp1 = jsFun.arrItemSort(temp,"score",1);
	*/
	arrItemSort: function(arrObj,keyName,type) {
		//这里如果 直接等于arrObj，相当于只是对对象的引用，改变排序会同时影响原有对象的排序，而通过arrObj.slice(0)，表示把对象复制给另一个对象，两者间互不影响 
		var tempArrObj = arrObj.slice(0);
		var compare = function (keyName,type) {
		    return function (obj1, obj2) {
		        var val1 = obj1[keyName];
		        var val2 = obj2[keyName];
		        if (!isNaN(Number(val1)) && !isNaN(Number(val2))) {
		            val1 = Number(val1);
		            val2 = Number(val2);
                }
                //如果值为空的，放在最后       
                if (val1 == null && val2 == null) {
		            return 0;
		        } else if (val1 == null && val2!= null ) {
		            return (type==1 ? -1 : 1);
		        } else if (val2 == null && val1!= null ) {
		            return (type==1 ? 1 : -1);
		        }            
                //排序
		        if (val1 < val2) {
		            return (type==1 ? 1 : -1);
		        } else if (val1 > val2) {
		            return (type==1 ? -1 : 1);;
		        } else {
		            return 0;
		        }            
		    } 
	   }
	   return tempArrObj.sort(compare(keyName,type));
	},




	
    /** 
	 * js操作cookies	
     * @param params
	 * @param name     变量名称
	 * @param value    变量值
	 * @param time     单位 秒 , 默认 30*24*60*60*1000  30天, 
	 */
	setCookie:function(name,value,time){
		var Days = 30;
		var exp = new Date();
		if(time=="" || time==undefined){
			time = 30*24*60*60*1000;
		}else{
			time = time*1000;
		}	
		exp.setTime(exp.getTime() +  time);
		document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();
	},
	getCookie:function(name){
		var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");
		if(arr=document.cookie.match(reg))
			return undefined == arr[2] ? "" : unescape(arr[2]);
		else
			return "";
	},
	delCookie:function(name){
		var exp = new Date();
		exp.setTime(exp.getTime() - 1);
		var cval=this.getCookie(name);
		if(cval!=null)
			document.cookie= name + "="+cval+";expires="+exp.toGMTString();
	},


}
